const http = require("http");
const fs = require("fs");
const url = require("url");
const qs = require("querystring");

// /api/xxxx

http.createServer((req, res)=>{
    if(req.url !== "/favicon.ico"){
        // console.log(req.url)
        if(req.url.startsWith("/api")){
            // /api/register
            // /api/login
            ajaxHrand(req,res);
        }else{
            fileHrand(req,res);
        }
    }
}).listen(3000,()=>{
    console.log("服务器开启成功.....")
})

// let userMSg = [{username:"admin",pass:123},{username:"root",pass:3456}]
let userMsg = [];

function ajaxHrand(req, res){
    let data = "";
    req.on("data",(d)=>{
        data += d
    })
    req.on("end",()=>{
        let dataObj = null;
        if(data){
            dataObj = qs.parse(data)
        }else{
            dataObj = url.parse(req.url,true).query
        }
        // 怎么确定，注册，还是登录
        // /api?type=register
        // /api?type=login
        // console.log(dataObj)
        if(dataObj.type === "register"){
            // 注册
            register(dataObj, req, res)
        }else if(dataObj.type === "login"){
            // 登录
            login(dataObj, req, res)
        }
    })
}

function register(dataObj, req, res){
    let flag = false;
    // 判断数组中是否有重复数据
    for(let i=0;i<userMsg.length;i++){
        if(userMsg[i].username === dataObj.username){
            // 有，改变状态
            flag = true;
            break;
        }
    }
    // 判断状态是否被改变
    if(flag){
        // 改变了，表示有重复
        res.write(JSON.stringify({
            code:0,
            message:"用户名重复"
        }))
    }else{
        // 没有改变，表示没有重复，注册成功
        userMsg.push({
            username:dataObj.username,
            password:dataObj.password
        })
        res.write(JSON.stringify({
            code:1,
            message:"注册成功"
        }))
    }
    res.end();
}
function login(dataObj, req, res){
    // console.log(userMsg)
    // 用户名不存在
    // 密码不符
    // 登录成功
    let flag = false;
    // 判断数组中是否有用户名
    for(var i=0;i<userMsg.length;i++){
        if(userMsg[i].username === dataObj.username){
            // 有用户名，修改状态
            flag = true;
            break;
        }
    }
    // 判断状态
    if(flag){
        // 有用户名，判断密码
        if(userMsg[i].password === dataObj.password){
            // 成功
            res.write(JSON.stringify({
                code:1,
                message:"登录成功"
            }))
        }else{
            // 密码错误
            res.write(JSON.stringify({
                code:2,
                message:"密码错误"
            }))
        }
    }else{
        // 用户名不存在
        res.write(JSON.stringify({
            code:0,
            message:"用户名不存在"
        }))
    }
    res.end();
}

function fileHrand(req, res){
    let p = url.parse(req.url).pathname;
    let path = p === "/" ? "/index.html" : p;
    fs.readFile("./www" + path, (err,data)=>{
        if(err){
            // res.write(fs.readFileSync("./www/error/404.html"))
            res.write("404");
        }else{
            res.write(data)
        }
        res.end();
    })
}

